+++++++++++++++++++++++++++++++++++++++++++++++===--:::::  .=***++++*
======================--==============--===++====--+::=-..-+=-==+===+
------------==========----==-----:::::::---==+---=**-+*::+*-:======+*
=-::::::--====+++++++++=+++++++++++++++++++#*==-**#*##+-*#*:==++=+##%
++++*****####################*********************************++***##
####***###################***********###******************+**+**++++*
##*###%%%%#####%#######**************##*********************++**++*+*
*####################**************####*#*************************+**
%%#%%###%%######**#****************####*****************************#
#****#***********##**************+**##**####**#*********************#
###%######******###************#**###***##****###*###*##************#
#%#####*********#*****************###********########*##########****#
###********************************##********#################*#####%
##*******************##*********************#****###############***##
#*******************###***********#********##******##**########*****#
#******************####************#***+***************########*****#
##**************##***#*************#*****+**######*******########***#
************************##**********#####****########******##########
*********************#####***********#***##***######**********#######
***************#**#******************##******++***##***************##
*************############*************##*******+****###*************#
************############**************###********+******************#
%#########%%%%%%%%%%%%%%%%%%%#####%####%%%%%%%%%####%%%%%%%%%%%#####%